
template <class T>

class SmartPtr {

public:
	explicit SmartPtr(T* pointee): m_pointee(ponitee);

	SmartPtr& operator=(const SmartPtr& other);

	~SmartPtr();
	
	T& operator*() const {
		return *m_pointee;
	}

	T* operator->() const {
		return m_pointee;
	}

private:
	T* m_pointee;
};
